"use strict";
/*
  在ts中的类 用法和es6所提供的类的用户基本是一致的，如果学习过es6，ts的类应该是算简单的
    在ES6的基础上新添加了 类型判断 以及关键字 public prvitead protectd关键字
    这三个字如果学过c#其实是非常的亲切的  都是一个道理

    关键字：
      public -- 默认的关键字 类内部 外部 子类都可以直接访问待
      protected -- 受保护的关键字 类内部可以访问 继承的函数可以访问  外部无法访问
      private  --  私有属性 只有自己的类内部可以访问，  外部和继承的类都是没有权限访问

    看到这些代码还是相对来说非常亲切的 因为c#都学习过 果然学习就是有好处的
*/
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var student = /** @class */ (function () {
    function student(namea, course, teacher) {
        this.name = namea;
        this.course = course;
        this.teacher = teacher;
    }
    student.prototype.showName = function () {
        console.log(this.name + "\u7684\u9009\u8BFE\u662F" + this.course + ",\u5B83\u7684\u8001\u5E08\u662F" + this.teacher);
    };
    student.prototype.setName = function (value) {
        this.name = value;
    };
    return student;
}());
var Jim = new student('jimmy', 'JS', 'missYe');
Jim.showName(); // jimmy的选课是JS,它的老师是missYe
console.log(Jim.name);
// console.log(Jim.course)  报错 因为类型不是public  所以在外部访问会报错
// console.log(Jim.teacher)  报错 因为类型不是public  所以在外部访问会报错
var person = /** @class */ (function (_super) {
    __extends(person, _super);
    function person(name, course, teacher) {
        return _super.call(this, name, course, teacher) || this;
    }
    person.prototype.showExtendmSG = function () {
        console.log(this.name + "\u9009\u7684\u8BFE\u7A0B\u662F" + this.course + ",\u4ED6\u7684\u6388\u8BFE\u8001\u5E08\u662F" + this);
        //  console.log(`he is teacher is ${this.teacher}`)  报错
        /**/
    };
    return person;
}(student));
